string_here”而不是“第一行:>string_here #include #in-6ren">
gpt4 book ai didi

c++ - 当给定一个字符串时,Cout 在行首开始打印

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:07 27 4
gpt4 key购买 nike

我在 C++ 中有一个字符串 vector ,名为 lines

这一行

std::cout << "First line: >" << lines[0] << "<" << std::endl; 

打印“>第一行:>string_here”而不是“第一行:>string_here<”。

为什么 cout 在字符串后的当前行的开头开始打印,我该如何解决?我也尝试在每次 cout 后冲洗,但结果是一样的。

这是说明我的问题的完整代码,在它被解决之前:

#include <iostream>
#include <vector>
#include <string.h>

std::vector<std::string> parse(char *buffer, const char *delimiter) {
std::string buff(buffer);
size_t pos = 0;
std::string part;
std::vector<std::string> parts;
while ((pos = buff.find(delimiter)) != std::string::npos) {
part = buff.substr(0, pos);
parts.push_back(part);
buff.erase(0, pos + 1);
}

parts.push_back(buff);

return parts;
}

int main() {
char *s;
s = strdup("Many lines\r\nOf text");

std::cout << s << std::endl; // this should print the string how it is

std::vector<std::string> lines;
lines = parse(s, "\n"); // parsing the string, after "\n" delimiter
// that was the problem, I should have parsed after "\r\n"

std::cout << "First line: >"<< lines[0] << "<" << std::endl; // output
}

最佳答案

如果没有 lines[0] 的全部内容是不可能确定的,但我(有根据的)猜测是 lines[0] 结尾\r,回车符,所以在 lines[0] 之后打印的所有内容都打印在行的开头。

关于c++ - 当给定一个字符串时,Cout 在行首开始打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44045773/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com