Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 为什么在按行然后按字拆分文件时会得到一个空向量?_String_File_Rust_Vec - Fatal编程技术网

String 为什么在按行然后按字拆分文件时会得到一个空向量?

String 为什么在按行然后按字拆分文件时会得到一个空向量?,string,file,rust,vec,String,File,Rust,Vec,我试图读取一个带有锈迹的文本文件,其中每行有两个用空格分隔的单词。我必须得到第一个单词的长度: 使用std::fs; fn main(){ 让contents=fs::read_to_string(“src/input.txt”).expect(“错误的文件名!”); 用于内容中的行。拆分(“\n”){ let tokens:Vec=line.split_whitespace().collect(); println!(“{}”,标记[0].len()); } } input.txt文件的内容

我试图读取一个带有锈迹的文本文件,其中每行有两个用空格分隔的单词。我必须得到第一个单词的长度:

使用std::fs;
fn main(){
让contents=fs::read_to_string(“src/input.txt”).expect(“错误的文件名!”);
用于内容中的行。拆分(“\n”){
let tokens:Vec=line.split_whitespace().collect();
println!(“{}”,标记[0].len());
}
}
input.txt文件的内容是:

monk perl
我在Windows上运行并使用cargo run。我收到以下错误(因为
标记[0]。len()
):

4
线程“main”在“索引超出范围:len为0但索引为0”时惊慌失措
我不知道我的代码出了什么问题。文件“input.txt”不是空的。

通过使用
.split(“\n”)
,您将在迭代器中获得两项。一个是您期望的行,另一个是换行后的空字符串。空字符串在拆分为单词时为空。这意味着向量将为空,并且索引0处没有项

改用:

使用std::fs;
fn main(){
让contents=fs::read_to_string(“src/input.txt”).expect(“AWrong文件名!”);
对于目录中的行。行(){
let tokens:Vec=line.split_whitespace().collect();
println!(“{}”,标记[0].len());
}
}
另见:

使用std::fs;
fn main(){
让contents=fs::读取字符串(“text.txt”)。预期(“错误的文件名!”);
用于内容中的行。拆分(“\n”){
let tokens:Vec=line.split_whitespace().collect();
if!tokens.is_empty(){//由于contents.split(“\n”)而必需
让word_list=read_字典(标记[0].len());
println!(“{}”,标记[0].len());
}
}
}

@109149,这取决于他们保存文件的位置。如果它在
src
中,那么它是必要的,是吗?@109149使用cargo run执行它将在src目录中查找-它不会。工作目录不是
src
。您可以在本地进行试验,亲自查看。