String Concat无法按预期工作

时间:2014-10-01 21:30:52

标签: c++ string add concat

我正在处理附加字符串,但首先是代码:

#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    string current;
    string filename;

    vector<string> vec(0);

    cout << endl << "Bitte Name der Eingabedatei angeben:" << endl;
    cin >> filename;

    ifstream infile(filename);

    while(std::getline(infile, current)) {
        vec.push_back(string(current));
    }

    for(size_t i = 0; i < vec.size(); i++) {
        string tmpLine = "";
        int semiCount = 0;

        //tmpLine.push_back('"');
        for(size_t j = 0; j < vec[i].size(); j++) {

            if(vec[i].at(j) == ';' && semiCount > 1) {
                tmpLine += ("\"");
                tmpLine += (",");
                tmpLine += ("\"");
                semiCount++;

            } else if(vec[i].at(j) == ';' && semiCount == 0) {
                tmpLine += (",");
                tmpLine += (" ");
                semiCount++;
            } else if(vec[i].at(j) == ';' && semiCount == 1) {
                string tmpName = tmpLine;
                tmpLine += ("\"");
                tmpLine += (",");
                tmpLine += ("\"");
                tmpLine += tmpName;
                tmpLine += ("\"");
                tmpLine += (",");
                tmpLine += ("\"");
                semiCount++;
            } else {
                tmpLine += vec[i].at(j); //seems to the problem
            }
            cout << tmpLine << endl;
        }

        tmpLine += ("dddd");    //works until here
        cout << tmpLine << endl;
        vec[i] = tmpLine;
    }

    return 0;
}

我想打开一个文件并基本上重新格式化它。这很好用,直到我想在我添加&#34; dddd&#34;的行中添加一些内容。输出如下:

.........................

Constanze,Adamek-Olbrich&#34;(加入之前)

ddddtanze,Adamek-Olbrich&#34;(加入后)

..........................

不是将其添加到字符串的末尾,而是替换第一组字符。

我不知道,为什么会那样做。 删除整个循环并只进行tmpLine =&#34;测试&#34;使追加工作,但毕竟我没有看到问题......

编辑:解决了问题:从我的文件导入的行的末尾似乎有一个不可见的字符,这会导致问题。如果我跳过它,它就可以了。

很抱歉,如果问题没有以正确的方式提出,那么这是我在StackOverflow中的第一个问题!

但是谢谢你告诉我,下次我会做得更好!

1 个答案:

答案 0 :(得分:1)

我认为你有线端问题。

该字符串包含回车符(但没有换行符),因此在打印ddddd之前,光标将返回到当前行的第0列。请注意,字符串连接正常。

最可能的原因是输入是否具有Windows行结束约定(CR + LF),输出终端/流使用Unix行结束约定(仅限LF)