C++编程:strtok函数详解与使用示例

需积分: 28 2 下载量 134 浏览量 更新于2024-09-17 收藏 33KB DOC 举报
"C++编程语言中的strtok函数用于分割字符串,以及如何控制浮点数的输出精度和格式。" 在C++编程中,处理字符串是一个常见的任务,strtok函数是C标准库提供的一种方便的字符串分割工具。这个函数可以从一个字符串中按照指定的分隔符切割出连续的子串,这对于解析数据或者处理由特定字符分隔的字符串非常有用。在`<string.h>`头文件中可以找到strtok函数的定义。 strtok函数的原型如下: ```cpp char* strtok(char* str, const char* delimiters); ``` 它接受两个参数:str是要分割的字符串,delimiters是分隔符字符串。strtok会在str中查找delimiters中的任何字符作为分隔符,并将它们替换为NULL(空字符)以创建单独的单词。首次调用时,str应指向要分割的字符串,后续调用则将str设为NULL,让strtok继续从上一次停止的位置开始分割。 以下是一个简单的示例,演示了如何使用strtok函数: ```cpp #include<stdio.h> #include<string.h> int main() { char str[] = "-This,asamplestring."; char* pch; printf("Splitting string \"%s\" into tokens:\n", str); pch = strtok(str, ",.-"); while (pch != NULL) { printf("%s\n", pch); pch = strtok(NULL, ",.-"); } return 0; } ``` 在这个例子中,str是一个包含多个由逗号、句点或破折号分隔的单词的字符串。strtok函数将这些单词逐一提取出来并打印。 另一方面,C++提供了控制浮点数输出精度和格式的方法。`std::setprecision(n)`是`iomanip`库的一部分,用于设置输出流中浮点数的总数字位数。默认情况下,浮点数的输出有效位数为6位。如果与`std::setiosflags(ios::fixed)`一起使用,它将确保浮点数以定点(即不使用科学记数法)形式输出,并且小数点右边有n位数字。而如果与`std::setiosflags(ios::scientific)`结合,它会控制以科学记数法表示的浮点数中小数部分的位数。 例如,如果你想要输出一个浮点数,保留两位小数且不使用科学记数法,可以这样做: ```cpp #include<iostream> #include<iomanip> int main() { double num = 3.1415926535; std::cout << std::setprecision(2) << std::fixed << num << std::endl; return 0; } ``` 这将输出`3.14`。 总结来说,C++的strtok函数是字符串处理的重要工具,而`std::setprecision`和`std::setiosflags`则提供了对浮点数输出格式和精度的精细控制,这对于在编程中显示和格式化数字非常有用。理解并掌握这些函数的使用,能帮助程序员更高效地处理字符串和浮点数的显示。