for(int i=0;i<n && myfile.ReadString(str) != FALSE ;i++) { char *pbuf=str.GetBuffer(); sum.SetAtGrow(i,str); fid= strtok(NULL," "); // pNum=(LPSTR)(LPCSTR)str; sort_id.InsertAt(i,fid.Trim()); }这一段怎么改呢
时间: 2023-12-02 21:06:04 浏览: 82
这段代码的作用是读取文件中的n行字符串,然后将每行字符串中的第一个空格前的部分存入sort_id数组中,将整行字符串存入sum数组中。如果你要对这段代码进行修改,应该先确定修改的目的是什么,需要达到什么效果。以下是一些可能的修改方案:
1. 修改字符串分割方式
如果你想将每行字符串中的第二个空格前的部分存入sort_id数组中,应该将strtok函数的第二个参数改为" ",即将空格改为分隔符。
2. 修改数组类型
如果你想使用动态数组代替静态数组sum和sort_id,可以使用vector类代替。代码示例:
```
vector<string> sum;
vector<string> sort_id;
string str;
char* fid;
for (int i = 0; i < n && getline(myfile, str); i++) {
sum.push_back(str);
fid = strtok_s(const_cast<char*>(str.c_str()), " ", &pbuf);
sort_id.push_back(string(fid));
}
```
3. 修改字符串处理方式
如果你想使用更安全的字符串处理方式,可以使用CString类的成员函数代替strtok函数。代码示例:
```
CString str, fid;
for (int i = 0; i < n && myfile.ReadString(str); i++) {
int pos = str.Find(' ');
if (pos != -1) {
fid = str.Left(pos);
sort_id.InsertAt(i, fid);
sum.SetAtGrow(i, str);
}
}
```
需要注意的是,在使用CString类的成员函数时,需要将CString类型的字符串转换为char*类型的字符串。
阅读全文