Sscanf用于此类型的字符串
sscanf for this type of string
即使在阅读了文档之后,我也不太确定如何使用sscanf。
这是我想做的:给定一串文本:
读取到前64个字符或直到达到空格然后是一个空格,一个=,然后是另一个空格。接下来,我想提取另一个字符串,直到字符串的末尾,或者如果达到8192个字符。我还希望它将第二个字符串"n"中的任何出现更改为实际的换行字符。
我有:"%64s = %8192s",但我认为这是不正确的。
感谢,
element.name = hellonworld
将string 1与element.name和string2作为
hello
world
我推荐使用std::regex,除此之外,您应该可以进行一些错误检查:
#include <cstdio>
int main(int argc, const char *argv[])
{
char s1[65];
char s2[8193];
if (2!=std::scanf("%64s = %8192s", s1, s2))
puts("oops");
else
std::printf("s1 = '%s', s2 = '%s'n", s1, s2);
return 0;
}
你的格式字符串在我看来是正确的;但是,sscanf不会将"n"的出现次数更改为其他任何内容。要做到这一点,您需要编写一个循环,使用strtok或甚至只是一个简单的for循环计算字符串中的每个字符,并将其交换为您喜欢的任何字符。您还需要计算sscanf返回值,以确定是否确实正确扫描了这两个字符串。Sscanf根据您的格式字符串返回成功扫描的字段数。
@sehe显示了sscanf的正确用法,包括检查正确的返回值。
相关文章:
- 如何检查模板类中的变量是否为字符串类型?
- C++类字符串类型的迭代器
- 如何将字符串指针数组转换为字符串类型的智能指针向量?
- 字符串类型的 2d 数组(C++;)
- 在 Rcpp 中的字符串类型之间转换时出错
- 为什么字符串类型会导致 c++ 程序无法运行?
- 如何将字符串类型转换为 ostringstream
- 当正斜杠运算符应用于C++中的字符串类型时,它会做什么
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- 我在 c++ 中声明字符串类型时遇到问题
- 对齐C++字符串类型问题 std::字符串到 TStr
- C++无符号字符串类型的正则表达式
- 当 JSON 值应为 INT 但以字符串类型发送时,RapidJSON 崩溃
- 如何使用 std::find 从向量的第一个元素中查找字符串<字符串对<字符串、字符串> >类型?
- 我想添加两个字符串类型的矩阵.用户将不会输入行数或列的数量.用户将仅输入数组
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 如何根据定义的字符串类型在“std::cout”和“std::wcout”之间进行选择
- C++ 仅当模板为字符串类型时执行小写转换
- 字符串类型的 C++ 模板无法编译
- 如何使用新字符串而不是分配器创建自己的字符串类型向量?