如何在MATLAB中一次性读取剪贴板中的多行输入?
在MATLAB中一次性读取多行输入的方法
input(char.empty,'s')只能读取到第一个换行符,这是因为它默认把换行当作输入结束的标志。要一次性读取粘贴的多行内容,可以通过直接读取标准输入流的方式实现,以下是两种可行方案:
方案一:用fgetl循环读取
通过循环调用fgetl(stdin)读取每一行,直到遇到EOF(文件结束符)停止。操作时粘贴多行内容后,按**Ctrl+D(Linux/macOS)或Ctrl+Z(Windows)**结束输入:
lines = {}; disp('粘贴内容后按Ctrl+D/Ctrl+Z结束输入:'); while true current_line = fgetl(stdin); if current_line == -1 % 检测到EOF break; end lines{end+1} = current_line; end % 可选:将所有行合并为单个字符串 full_content = strjoin(lines, '\n');
方案二:用textscan批量读取
借助textscan直接读取所有行,同样需要以Ctrl+D/Ctrl+Z结束输入:
disp('粘贴内容后按Ctrl+D/Ctrl+Z结束输入:'); fid = stdin; % 按行读取,将每行作为字符串存入单元格数组 content_cell = textscan(fid, '%s', 'Delimiter', '\n', 'EndOfLine', '\n'); fclose(fid); full_content = strjoin(content_cell{1}, '\n');
处理数值内容
如果粘贴的是多行数值,可将读取到的内容转换为数值数组:
% 基于方案一的lines变量 numeric_cells = cellfun(@str2num, lines, 'UniformOutput', false); % 若每行数值数量一致,可合并为矩阵 numeric_matrix = cell2mat(numeric_cells);
这些方法不需要依赖剪贴板,直接在MATLAB命令行中粘贴多行内容即可一次性读取。
内容的提问来源于stack exchange,提问作者Argyll
相关产品推荐
相关产品推荐

