即使阅读了如何使用 sscanf 执行此操作的文档,我也不太确定。
这是我想做的: 给定一串文本:
读取最多前 64 个字符或直到达到空间 然后会有一个空格,一个=,然后是另一个空格。 之后,我想提取另一个字符串,直到字符串结束或达到 8192 个字符。我还希望它将第二个字符串中出现的任何“\n”更改为实际的换行符。
我有:“%64s = %8192s”,但我认为这是不正确的。
谢谢
例如:
element.name = hello\nworld
将字符串 1 与 element.name 和字符串 2 作为
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;
}
关于c++ - sscanf 对于这种类型的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685769/