0
#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'。c ++での文字列の終了が使用しないことを示すstackoverflowに関するいくつかの質問を読みました'\0'。代わりに文字列を終了する方法が見つかりませんでした。誰でも助けることができますか?

4

3 に答える 3

4

文字列のヌル終了は、対処する必要のないstd::stringものです。まず、受け入れるすべての関数はすでに長さを知っており、終了std::stringを必要としません。NULL第二に、 -で終わる文字列を提供std::stringするc_str()ラッパーがあるNULLため、それをいじる必要はありません。文字列を必要な長さに設定するだけresizeで完了です。

于 2013-06-25T10:28:59.177 に答える
1

文字列のサイズを で設定するだけで、string::resizenull 終端は必要ありません。

a.resize(tail);
于 2013-06-25T10:25:47.903 に答える