将char *转换为<string>

时间:2015-08-12 10:18:24

标签: c++ string vector

这是我的第一篇文章,所以请理解我:)

我想使用字符串向量来简化排序数据,但我还需要这个字符串来运行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;
    }

}

1 个答案:

答案 0 :(得分:1)

首先,我不知道为什么要将char *转换为字符串。在您的解决方案中,首先必须为字符分配内存

char *word = new char[HOW_MANY_CHARS]

但是有更好的解决方案。你可以写:

cin >> str;
fun1(str);
tab.push_back(str);

你必须将fun1改为:

void fun1(string &t);