如何在c ++中终止字符串

时间:2013-06-25 10:13:09

标签: c++ string null-terminated

#include<iostream>
#include<memory.h>
#include<string.h>
using namespace std;
int main()
{
string a;
cin>>a;
int len=a.length();
bool hit[256];
memset(hit,0,sizeof(hit));
hit[a[0]]=1;
int tail=1;
for(int i=1;i<len;i++)
{
    if(!hit[a[i]])
    {
        a[tail]=a[i];

    ++tail;
    hit[a[i]]=true;
}
}
a[tail]='\0';
cout<<" "<<a;
}

此程序删除字符串中的重复项。例如,"aaaa"的输入将仅打印“a”。

我需要知道的是如何在C ++中终止字符串!它不会以'\0'结尾。我读了一些关于stackoverflow的问题,表明c ++中字符串的终止不使用'\0'。我没有找到如何终止字符串。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

Null-terminate字符串是您不会必须处理的std::string。首先,接受std::string的每个函数都已知道长度,并且不需要NULL终止。其次,std::string有一个c_str()包装器,为您提供NULL - 终止字符串,因此您无需使用它。只需使用resize将字符串设置为所需的长度即可。

答案 1 :(得分:1)

只需按string::resize设置字符串的大小,不需要空终止:

a.resize(tail);

答案 2 :(得分:1)

要删除重复项,您可以使用std::unique here是该函数的说明。它将返回“迭代器到最后一个元素后面的元素”。因此,您可以使用a.resize(i)调整字符串的大小,其中istd::unique的返回值。