c++测试字符串的最后一个字符
C++ test last character of a string
我想测试var字符串是否以'n'终止,以便从流异步套接字中检测和删除一些不完整的传入变量。似乎下面的代码不能正常工作。为什么?
string var;
char *rest = nullptr;
char *pVar = nullptr;
istringstream iss(sReadBuffer); // Put into a stream
while (getline(iss, var)) // Default delimiter 'n' or EOF
{
int size = var.size();
pVar = _strdup(var.c_str()); // Cast string to char * for later use (strstr,...)
if(var[size] != 'n') // If incomplete variable found (not newline ended)...
{
debug("Incomplete variable found : ", pVar, "n");
rest = pVar;
break;
}
//... proceed with variable normally if they are complete
getline()
放弃换行符。如果要测试EOF,请测试stringstream
对象本身。
var[size]
访问越界字符串。但是您可以使用std::string::back
成员来获取对最后一个元素的引用。
if(var.back() != 'n')
避免潜在的索引错误。上面的代码假设var
不是空的。您可以查看std::string::empty()
。例如,
if((!var.empty()) && (var.back() != 'n'))
如何在使用getline
读取的字符串中找到n
是另一回事。
相关文章:
- 使用连续分隔符和空最后一个字符进行拆分
- 如何检查字符串中的最后一个字符是否是某个字符并将其从字符串中删除?(C++)
- 比较最后一个字符,不区分大小写(带谓词?
- 在弦乐器中删除最后一个字符
- 输入文件中的第一个字符是输出文件中的最后一个字符,反之亦然
- 在C 字符串中,为什么在最后一个字符之后,通过索引和()访问索引时行为是不同的
- 如何查看复杂度为 O(1) 的字符串流对象中的最后一个字符
- 最后一个字符行编辑
- 如何在C 中获得字符串的最后一个字符
- 如何在C++中删除 UTF-8 字符串的最后一个字符
- 如何获取输入文件的行的第二个和最后一个字符,并在C++中组成数组
- 输出流中的第一个字符将替换为该流中被删除的最后一个字符.为什么会这样
- 正在将最后一个字符发送到std::cout
- 获取字符串流中的最后一个字符,而不复制其整个缓冲区
- remove_if字符串中的最后一个字符
- 如何删除最后一个字符
- 从字符数组中删除第一个和最后一个'X'字符
- C++文件中的最后一个字符
- (C++)如何从特定(结束)点查找 std::string 中的最后一个字符
- 如何获取您放入 ostream 对象中的最后一个字符