Печать вектора C ++ с добавлением новой строки

0

У меня есть вектор структур.

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

С дополнительной новой строкой и пространством. Я не могу понять, как избавиться от него и напечатать его в той же строке. Какие-либо предложения?

Теги:
vector
ostream

3 ответа

0

Один хак будет слиянием строки, прежде чем передать ее в outputFile.

или

Вы пытались играть с настройкой режима с помощью метода open()? например

outputFile.open("file.txt", std :: ofstream :: out | std :: ofstream :: app);

  • 0
    Я бы попробовал это. Также нет необходимости использовать 'endl', если вы не хотите очищать файл после каждой строки. Просто используйте '\ n' в противном случае.
0

"Я использую getline (input, foo.text), поэтому он должен отбрасывать символ новой строки"

std::getline() добавляет возврат каретки в конце, если ваш поток input имеет разрывы в стиле окна (CRLF), и вы используете программу в unix, которая имеет LF

Вам нужно обрезать его, используя некоторые из них:

foo.text.erase(foo.text.find_last_not_of("\n\r")+1);

  • 0
    Все еще не повезло, используя этот код. Он работает просто отлично, используя cout, но ломается, используя выходной файл
0

Вы можете проверить, включает ли foo [x].text\r или \n.

  • 0
    Это не. Я проверил это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню