[英]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)
調整字符串的大小,其中i
是std::unique
的返回值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.