通过char将char分配给c ++字符串

时间:2018-01-12 18:54:52

标签: c++ string

我有一个文本文件,其中的数据以下列格式存储: -

aabb:aabb
aacc:aacc
aadd:aadd
bbdd:bbdd
bbaa:bbaa

我正在逐行阅读文件并试图分开':'两边的文字。我将每一行都放入一个字符串行。我将字符左侧分配给':',字符串中的字符为char,字符右侧为':',字符为char,字符串为m。但问题是在执行两个循环后字符串w和m变空。为什么字符串w和m为空?

int flag;
string line, w, m;
ifstream fin;
fin.open("files/file2.txt",ios::in);
if (fin.is_open()) {
    while (getline(fin,line)) {
        for (int i=0; i<line.length(); i++) {
            if (line[i] == ':') {
                flag = i+1;
                break;
            } else
                w[i] = line[i];
        }
        for(int i=flag,k=1; i<line.length(); i++,k++) {
            m[k] = line[i];
        }
        cout<<w<<'\n';
        cout<<m<<'\n';
    }
    fin.close();
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您的代码存在的问题是您要将字符分配给mw尚不存在的位置:这两个字符串最初都是空的,因此对它们应用[]会导致未定义的行为。

由于您要在字符串末尾添加字符,请使用append代替[]

w.append(1, line[i]);
...
m.append(1, line[i]);

+=

w += line[i];
...
m += line[i];