gpt4 book ai didi

C++关于连接两个字符串

转载 作者:行者123 更新时间:2023-11-30 01:37:36 24 4
gpt4 key购买 nike

这是我的代码的一部分。我不知道为什么该字符串被另一个字符串部分覆盖。

for(int xd = 0 ; xd < 10; xd++)
{
if(booklist[xd].length() != 0)
{
string d = string(booklist[xd]);
string e = "1,2,3,4";
string f = d + e;
cout << d.length() << endl;
cout << d << endl;
cout << f.length() << endl;
cout << f << endl;
}
}

这段代码的结果是:

16
brave new world
23
1,2,3,4ew world
28
nineteen eighty-four (1984)
35
1,2,3,4n eighty-four (1984)

我不知道为什么我得到了这个错误的结果。有人可以帮助我吗?

最佳答案

您是否通过从 Windows 复制到 Linux 机器的文件中提取来填充书单

Windows 会在每行的末尾添加一个回车符 '\r' 除了换行符。如果您正在从 Windows 文件读取并使用 getline,它会将回车符拉入字符串。

当在终端中输出回车时,它会将光标重置到行的开头,这将导致您看到的行为。

要解决此问题,请参阅 this question从字符串中修剪空格。您从该答案中寻找的功能是 rtrim(或“右修剪”):

// trim from end (in place)
static inline void rtrim(std::string &s) {
s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) {
return !std::isspace(ch);
}).base(), s.end());
}

关于C++关于连接两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49517383/

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