我正在处理附加字符串,但首先是代码:
#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中的第一个问题!
但是谢谢你告诉我,下次我会做得更好!
答案 0 :(得分:1)
我认为你有线端问题。
该字符串包含回车符(但没有换行符),因此在打印ddddd
之前,光标将返回到当前行的第0列。请注意,字符串连接正常。
最可能的原因是输入是否具有Windows行结束约定(CR + LF),输出终端/流使用Unix行结束约定(仅限LF)