C++,Python,Javascripts操作文件读写,字符串分割

C++

读文件:

前提是需要包含头文件

#include <iostream>
#include <fstream>
#include <string>

逐行读取

std::ifstream file(“xxx/”);
if(!file)
{
    std::cout<<“file don not open”<<std::endl;
}
else {
    std::string line;
    while(getline(file,line))
    {
        std::cout<<"content:"<<line<<std::endl;
    }
    file.close();
}

逐字

std::ifstream file("xxx/");
if (!file) {
   std::cout << "无法打开文件!" << std::endl;
   return 1;
}
char character;
while (file.get(character)) {
     std::cout << character;
}
file.close();
return 0;

写文件

  std::ofstream outfile.open("xxx/文件名", std::ios::app);
  if(!outfile.is_open ()) cout << "Open file failure!" << endl;
  else{
    outfile<<ask;    
  }
  outfile.close();
  std::cout << "Write file success!" << endl;
  • ios::app:模式用于在文件末尾追加数据,而不会覆盖原有内容。
  • ios::out: 打开文件进行写操作。如果文件不存在,则创建新文件;如果文件存在,则清空文件内容。这是默认模式。
  • ios::in: 打开文件进行读操作。
  • ios::in | ios::out:同时读写
  • ios::binary: 以二进制模式打开文件。这会影响数据的读取和写入方式,特别是对于非文本数据。
  • ios::ate: 打开文件并将文件指针定位到文件末尾。这样可以直接从文件末尾开始读写操作
  • ios::nocreate: 不创建新文件。如果文件不存在,则打开失败。

Python

读文件

  • 'r':以只读方式打开文件(默认)。如果文件不存在,会抛出FileNotFoundError异常。
  • 'w':以写入方式打开文件。如果文件已存在,则清空文件内容;如果文件不存在,则创建新文件。
  • 'a':以追加方式打开文件。如果文件已存在,则在文件末尾追加内容;如果文件不存在,则创建新文件。
  • 'x':如果文件不存在,则以写入方式创建一个新文件;如果文件已存在,则抛出FileExistsError异常。
  • 'b':以二进制模式打开文件。
  • 't':以文本模式打开文件(默认)。
  • '+':以读写模式打开文件。

读取一行

with open('example.txt', 'r') as file:
    for line in file:
        print(line.strip())

一次读取所有

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

写文件

写入前清空

with open('example.txt', 'w') as file:
    file.write("Hello, World!\n")

追加

with open('example.txt', 'a') as file:
    file.write("Hello word\n")

JavaScripts

读文件(二进制格式)

//创建读文件对象
const reader = new FileReader();
//读取文件内容,二进制格式
reader.readAsArrayBuffer(file);
//二进制格式读取完成后触发
reader.onload = function(e) {
    //获取文件内容
    const filedata = e.target.result;
    console.log(filedata)

};

读文件(URL格式)


//创建读文件对象
const reader = new FileReader();
//读取文件内容,URL格式
reader.readAsDataURL(file);

//URL格式读取完成后触发
reader.onload = function(e) {
        const picdata = e.target.result;
        //可以将URL存入到img对象其中的src属性
        

写文件(保存图像)

FileSaver.js库保存图片

   <script src="https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.js"></script>

SaveAs函数使用

假设服务器端发来了图片的二进制数据rece_picblob,则他是一个Blod对象

saveAs(rece_picblob,"output.png");

字符串分割

python

直接使用内置函数split,返回值是一个列表,可以根据索引获取分割项。

str =  "Hello word"
list = str.split(' ')
list_one = str.split(' ')[0]
list_two = str.split(' ')[1]

c++

std::vector<std::string> split(const std::string &str,char splitchar)
{
    std::istringstream stream(str);
    std::string ele;
    std::vector<std::string> output;
    while(std::getline(stream,elemsplitchar))
    {
        output.push_back(ele);
    }
    return output;
}
### JavaScript 字符串操作方法详解 #### 一、字符串概述 JavaScript 中的字符串是一种基本数据类型,具有不可变特性。一旦创建了一个字符串,其内容无法被修改。所有的字符串操作实际上都是基于原字符串生成新的字符串。 --- #### 二、常见字符串操作分类 可以将字符串操作分为四类:增加、删除、修改和查询。 --- #### 三、具体操作方法 ##### (1)增加 (`concat`) `concat()` 方法用于连接两个或多个字符串并返回新字符串,不会影响原有字符串。 ```javascript let str1 = "Hello"; let str2 = "World"; let result = str1.concat(" ", str2); console.log(result); // 'Hello World' ``` 此方法适用于简单拼接场景[^1]。 --- ##### (2)删除 (`slice`, `substring`, `substr`) - **`slice(start, end)`** 返回从起始索引到结束索引之间的一个子字符串(不包括结束索引处的字符)。如果参数为负数,则表示从字符串末尾开始计算位置。 ```javascript let str = "abcdefg"; console.log(str.slice(2, 5)); // 'cde' ``` - **`substring(start, stop)`** 提取介于两个指定下标之间的字符,忽略负数值并将它们视为零。 ```javascript let str = "How are you ?"; console.log(str.substring(0, 3)); // 'How' [^2] ``` - **`substr(start, length)`** 抽取从指定位置开始的一定数量的字符。注意该方法已被废弃,在现代开发中应优先考虑其他替代方案。 ```javascript let str = "2021,希望过得开开心心!!"; console.log(str.substr(5)); // '希望过得开开心心!!' console.log(str.substr(5, 7)); // '希望过得开' ``` 上述三种方法均不会更改原始字符串[^4]。 --- ##### (3)修改 (`replace`, `toUpperCase`, `toLowerCase`) - **`replace(searchValue, replaceValue)`** 替换匹配的第一个子字符串,并返回替换后的结果。 ```javascript let str = "hello world"; console.log(str.replace("world", "JavaScript")); // 'hello JavaScript' ``` - **`toUpperCase()` 和 `toLowerCase()`** 将整个字符串转换成大写或小写字母形式。 ```javascript let str = "JavaScript is Fun!"; console.log(str.toUpperCase()); // 'JAVASCRIPT IS FUN!' console.log(str.toLowerCase()); // 'javascript is fun!' ``` 这些方法同样不影响源字符串[^3]。 --- ##### (4)查询 (`indexOf`, `lastIndexOf`, `includes`, `startsWith`, `endsWith`) - **`indexOf(searchValue[, fromIndex])`** 查找第一个出现的目标子字符串的位置;未找到则返回 `-1`。 ```javascript let str = "banana"; console.log(str.indexOf("a")); // 1 ``` - **`lastIndexOf(searchValue[, fromIndex])`** 寻找最后一个目标子字符串所在位置。 ```javascript let str = "banana"; console.log(str.lastIndexOf("a")); // 5 ``` - **`includes(searchString[, position])`** 判断是否包含某个特定子字符串,返回布尔值。 ```javascript let str = "hello world"; console.log(str.includes("world")); // true ``` - **`startsWith(searchString[, position])` 和 `endsWith(searchString)`** 验证字符串是否以前缀/后缀开头或结尾。 ```javascript let str = "file.txt"; console.log(str.startsWith("file")); // true console.log(str.endsWith(".txt")); // true ``` 以上均为只读性质的方法。 --- ### 总结 通过掌握 `concat` 添加、`slice/substring/substr` 删除、`replace/toUpperCase/toLowerCase` 修改以及各种定位函数等功能,能够灵活处理日常编程中的绝大多数字符串需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值