c – 如何将整数字符串转换为一个充满int的向量?
发布时间:2020-12-16 09:55:58 所属栏目:百科 来源:网络整理
导读:我知道有关同样事情的其他问题,但是,我已经用其他资源来提出我现在所拥有的东西,并且我得到了一个我似乎无法弄清楚的错误.另外,请记住我是初学者.话虽这么说,我有一个非常大的字符串填充整数格式如下: newString =“12 -34 50 2 -102 13 78 9”(实际的字符
我知道有关同样事情的其他问题,但是,我已经用其他资源来提出我现在所拥有的东西,并且我得到了一个我似乎无法弄清楚的错误.另外,请记住我是初学者.话虽这么说,我有一个非常大的字符串填充整数格式如下:
newString =“12 -34 50 2 -102 13 78 9”(实际的字符串要大得多).然后我尝试使用transform()创建一个函数,将字符串转换为int的向量: int convertString(){ istringstream is(newString); vector<int> intVector; transform(istream_iterator<string>( is ),istream_iterator<string>(),back_inserter( intVector ),[]( const string &newString ){ return ( stoi( newString ) ); } );//This is the line indicated in the error! for(int x : intVector ) cout << x << ' '<<endl; return 0; } 我得到的错误是在指示的错误行处有一个预期的表达式… 在此先感谢您,如果有什么不清楚的话请告诉我! 解决方法
假设您已经合理地确定输入只包含格式正确的整数,(或者只有在遇到除可读整数之外的东西时才会停止读取),这里不需要转换 – istream_iterator本身可以完美地处理转换好.您可以直接从迭代器初始化向量,给出如下代码:
std::istringstream is(newString); std::vector<int> intVector { std::istream_iterator<int>(is),std::istream_iterator<int>()}; 这在一个方面与你的版本不同:如果你给stoi一个字符串它不能转换为一个整数,它会抛出一个异常 – 如果它包含像ac这样的东西的invalid_argument;根本无法转换为整数,或out_of_range,如果它包含50位数字,则会产生不适合目标类型的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |