gpt4 book ai didi

c++ - 有没有更好的方法来解析这样的一行文本?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:39:00 25 4
gpt4 key购买 nike

我有一个文本文件,其中的文本行有一个字符串,另一个字符串后跟最多 4 个整数,例如:

clear "clear water.png" 5 7
wet "wet water.png" 9 5 33 17
soft "soft rain falling.png"

我看到的唯一方式是:

read until space is found

set string to wet

read until double quote

read until second double quote

set second string to wet water.png

while not end of line

read until space

put string through string stream

push resulting integer into vector of int

有更好的方法吗?

谢谢

最佳答案

这是 scanf 和公司真正出色的任务。

char first_string[33], second_string[129];

sscanf(input_string,
"%32s%*[^\"]%*c%128[^\"]%*c %d %d %d %d",
first_string,
second_string,
&first_int,
&second_int,
&third_int,
&fourth_int);

您可能想在 if 语句中执行此操作,以便您可以测试返回值,告诉您有多少字段已转换(例如,这样您就知道在结束)。

编辑:也许一些解释会有所帮助。让我们剖析一下:

%32s 读取字符串到第一个空白(或 32 个字符,以先到者为准)。
%*[^\"] 忽略第一个 " 之前的输入。
%*c 忽略一个多字节的输入(引号本身)
%128[^\"] 读取引号中的字符串(即,直到下一个引号字符)。
%*c 忽略结束引号%d 读取一个 int(我们已经做了四次)。

每个 %d 之前的空格确实是不必要的——它会跳过空格,但如果没有空格,%d 无论如何都会跳过前导空格。我将它们包括在内纯粹是为了使其更具可读性。

关于c++ - 有没有更好的方法来解析这样的一行文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com