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位数字,则会产生不适合目标类型的结果.
总结以上是内存溢出为你收集整理的c – 如何将整数字符串转换为一个充满int的向量?全部内容,希望文章能够帮你解决c – 如何将整数字符串转换为一个充满int的向量?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)