【问题标题】:How to remove null characters at the end of a user input string?如何删除用户输入字符串末尾的空字符?
【发布时间】: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


【解决方案1】:

您是否尝试过以下方法?

strings[i] = strings[i].substr(0, 81)

我有一段时间没有使用 C++,但这应该只是将输入修剪为前 81 个字符。更好的是,当您第一次获得输入时应用此设置,或者如果太长,则向用户返回用户输入错误。

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 2010-11-05
  • 2015-10-10
  • 2019-01-11
  • 2023-01-04
  • 1970-01-01
  • 2011-03-07
相关资源
最近更新 更多