【问题标题】:While using string function in C++ getting terminated by using substr() function [duplicate]在 C++ 中使用字符串函数时,使用 substr() 函数终止 [重复]
【发布时间】:2021-05-13 01:00:10
【问题描述】:

** 我目前想使用整个字符串,它应该在它们之间包含空格,所以我使用 getline() 函数但是在代码 getline() 之后我的代码被终止,我不知道为什么会发生这种情况**


using namespace std;

int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        
        int n;
        cin >> n;
        while (n--)
        {
            string m;
            getline(cin, m);
            string s1 = m.substr(1);
            string s2 = m.substr(6);
            string s3 = m.substr(9);
            string s4 = m.substr(15);
            cout << s1 << s2 << s3 << s4 << endl;
        }

    }
    return 0;
}```

【问题讨论】:

  • 在分配字符串之前,打印m的长度,然后再次查看您的代码。
  • 您的输入是否至少有 16 个字符?否则会抛出异常。
  • @molbdnilo 输入是“12:00 AM 11:23 PM”
  • 如果您验证,例如使用cout &lt;&lt; '|' &lt;&lt; m &lt;&lt; '|' &lt;&lt; endl;,您确实阅读了您认为自己阅读的内容,您很可能会注意到该字符串为空,这是因为this
  • @molbdnilo 那我能做什么

标签: c++ string function substr


【解决方案1】:

试试这个:

char input[100];
cin.getline(input, sizeof(input));
string str = input;
cout << str.substr(1) << " " << str.substr(6) << " " << str.substr(9) << " " << 
str.substr(15) << "\n";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 2014-02-19
    • 2011-05-07
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多