【发布时间】:2020-02-18 21:19:27
【问题描述】:
我有一个由 20 个字符串组成的数组,用户将填充最多 81 个字符,如果用户输入的字符大于 81 个字符,我该如何去除末尾多余的空字符?
我试图寻找解决方案,但大多数似乎都要求我知道用户在程序运行之前输入了多少个字符。
int main()
{
string strings[20];
cout << "Enter up to 20 strings, press enter when done: ";
input(strings);
for (int i = 0; i < 20; i++)
{
if (strings[i] == "\0")
break;
else
{
strings[i].resize(81);
cout << "Here is string" << i << ": " << endl << strings[i] << endl;
menu(strings[i]);
}
}
void input(string strings[])
{
for (int i = 0; i < 20; i++)
{
getline(cin, strings[i]);
if (strings[i] == "\0")
break;
}
}
【问题讨论】:
-
"如果用户输入,我该如何去除最后多余的空字符" 什么多余的空字符?您通过
std::getline读取的字符串不会包含任何空字符.. -
您要么接受不寻常的输入,要么奇怪地处理输入,从而造成问题。您能否扩展问题以演示您如何使用输入并添加示例输入集?
-
为什么你认为你必须删除空字符?我觉得这是一个xy problem,X 实际上没问题。是什么让您认为有问题?
-
strings[i] == "\0"是一种不寻常的做法strings[i].empty()(empty)。
标签: c++ string cin null-character