【发布时间】:2017-05-09 22:07:49
【问题描述】:
我知道为什么会出现分段错误,但我无法使用以下代码找出错误,该代码是基于空格分割字符串的。
#include<iostream>
#include<string>
#include<vector>
#include<typeinfo>
using namespace std;
vector<string> split(const string& s)
{
//cout << "HERE";
vector<string> tab;
for(unsigned int a = 0; a < s.size(); a++)
{
string temp = to_string(s[a]);
while(to_string(s[a]) != " ")
{
a++;
temp = temp + s[a];
}
tab.push_back(temp);
}
return tab;
}
int main()
{
int n;
cin >> n;
while(n--)
{
string s;
cin >> s;
vector<string> temp = split(s);
for(unsigned int i = 0; i < temp.size(); i++)
{
cout << temp[i] << endl;
}
}
return 0;
}
另外,如果我在 split 函数中注释掉 while 循环,我会在打印出结果字符串时得到数字。是因为to_string吗?如果我在主函数中打印得到的结果字符串上使用typeid(variable).name(),我会得到:NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE。
【问题讨论】:
-
程序应该做什么?另外,你好像是在Linux上,有没有试过用gdb?
-
std::string::find和std::string::substr够你用了 -
这些标签真的有必要吗?
-
回到你的问题,
std::to_string对char没有超载