C ++打印矢量添加新行

时间:2013-10-10 03:02:16

标签: c++ vector ostream

我有一个结构矢量。

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

带有额外的换行符和空格。我无法弄清楚如何摆脱它并在同一条线上打印它。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您可以检查foo [x] .text是否包含\ r或\ n。

答案 1 :(得分:0)

“我正在使用getline(input,foo.text)。所以它应该丢弃换行符”

std::getline()如果您的input流具有Windows样式的换行符(CRLF),并且您在unix上使用了一个程序,其中包含LF

您需要使用以下内容修剪它:

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

答案 2 :(得分:0)

在将字符串传递给outputFile之前,一个hack会合并字符串。

您是否尝试过使用open()方法进行模式设置? 例如

  

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