这是我的第一篇文章,所以请理解我:)
我想使用字符串向量来简化排序数据,但我还需要这个字符串来运行fun1。所以我想将char * word转换为string str ,但我无法做到。我正在寻找我的问题的答案,但我没有找到。 请帮忙,这是代码:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <string.h>
using namespace std;
vector <string> tab;
vector <string> tab2;
int l['Z'+1];
void fun1(char *t)
{
for(int i = 0; t[i]; i++)
l[t[i]]++;
int j = 0;
for(int i = 'A'; i <= 'Z'; i++)
if(l[i])
{
t[j++] = i;
l[i--]--;
}
}
int main()
{
char * word;
string str;
ios_base::sync_with_stdio(0);
int z;
int n;
cin >> z;
while(z--)
{
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> word;
fun1(word);
str.assign(word, sizeof(word));
tab.push_back(str);
}
sort(tab.begin(), tab.end());
for(int i = 0; i < tab.size(); i++)
cout << tab[i] << endl;
}
}
答案 0 :(得分:1)
首先,我不知道为什么要将char *转换为字符串。在您的解决方案中,首先必须为字符分配内存
char *word = new char[HOW_MANY_CHARS]
但是有更好的解决方案。你可以写:
cin >> str;
fun1(str);
tab.push_back(str);
你必须将fun1改为:
void fun1(string &t);