簡體   English   中英

如何在C ++中終止字符串

[英]how to terminate a string in c++

#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' 我沒有找到如何終止字符串的方法。 有人可以幫忙嗎?

Null終止的字符串是您不必使用std::string 首先,每個接受std::string函數都已經知道長度,並且不需要NULL終止。 其次, std::string具有一個c_str()包裝器,該包裝器為您提供了一個以NULL結尾的字符串,因此您不必費力。 只需將字符串設置為所需的長度即可resize

只需通過string::resize設置字符串的string::resize ,就不需要空終止符:

a.resize(tail);

要刪除重復項,可以使用std::unique 這里是該函數的說明。 它將返回“ 對最后一個未刪除元素之后的元素的迭代器 ”。 因此,您可以使用a.resize(i)調整字符串的大小,其中istd::unique的返回值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM