У меня есть вектор структур.
struct myStruct{
string text;
int num;
};
vector<myStruct> foo;
И я пытаюсь напечатать текст, затем пробел, затем номер. Вот так:
foobar 5
Но при попытке распечатать мой вектор, используя
ofstream outputFile;
outputFile.open ("file.txt");
for(int i = 0; i < foo.size(); i++) {
outputFile << foo[x].text << " " << foo[x].num << endl;
}
Он печатает как
foobar
5
moretext
8
С дополнительной новой строкой и пространством. Я не могу понять, как избавиться от него и напечатать его в той же строке. Какие-либо предложения?
Один хак будет слиянием строки, прежде чем передать ее в outputFile.
или
Вы пытались играть с настройкой режима с помощью метода open()? например
outputFile.open("file.txt", std :: ofstream :: out | std :: ofstream :: app);
"Я использую getline (input, foo.text), поэтому он должен отбрасывать символ новой строки"
std::getline()
добавляет возврат каретки в конце, если ваш поток input
имеет разрывы в стиле окна (CRLF), и вы используете программу в unix, которая имеет LF
Вам нужно обрезать его, используя некоторые из них:
foo.text.erase(foo.text.find_last_not_of("\n\r")+1);
Вы можете проверить, включает ли foo [x].text\r или \n.