在C++中,我可以使用std::istringstream将字符串转换为令牌流.如何在铁 rust 中做到同样的事情?

C++

std::string data;
std::getline(file_handle, data);

if ((data.empty()) || (data.front() == '#'))
    continue;

std::string ctype, name;
int class;

std::istringstream iss(data);
iss >> ctype >> name >> class;

推荐答案

隐约相似的版本:

std::string ctype, name;
int class;

std::istringstream iss(data);
iss >> ctype >> name >> class;

在Rust中如下所示(在实际代码中,unwrap可能是?个使用或expect个调用,具有有用的错误或以某种其他方式进行错误处理):

let mut tokens = data.split_whitespace();
let ctype = tokens.next().unwrap();
let name = tokens.next().unwrap();
let class: i32 = tokens.next().unwrap().parse().unwrap();

请注意,split_whitespace将生成datastr个子视图,而不是独立拥有的String,因此,如果data将在到期之前到期,则可能需要添加.to_owned()ctype调用和name个调用.

Rust相关问答推荐

如何在Rust中为具有多个数据持有者的enum变体编写文档 comments ?

MPSC频道在接收器处阻塞

如何在 struct 的自定义序列化程序中使用serde序列化_WITH

用 rust 蚀中的future 展望 struct 的future

无法从流中读取Redis请求

在本例中,为什么我不能一次多次borrow 可变变量?

为什么';t std::cell::ref使用引用而不是非空?

如何从ruust中的fig.toml中读取?

`*mut[T]`与`*mut T`的区别

程序在频道RX上挂起

使用 select 处理 SIGINT 和子等待!无阻塞

使用 serde::from_value 反序列化为泛型类型

在 Rust 中,为什么 10 个字符的字符串的 size_of_val() 返回 24 个字节?

如何强制匹配的返回类型为()?

tokio::spawn 有和没有异步块

如何将 C++ 程序链接到 Rust 程序,然后将该 Rust 程序链接回 C++ 程序? (cpp -> rust -> cpp)

为什么 for_each 在释放模式(cargo run -r)下比 for 循环快得多?

我如何将 google_gmail1::Gmail> 传递给线程生成?

相交着色器从 SSBO 中读取零

C++ 中的 CRTP 是一种表达其他语言中特征和/或 ADT 的方法吗?